home *** CD-ROM | disk | FTP | other *** search
- on getSerialDate datestr
- if integerp(datestr) then
- return datestr
- else
- setDelimiter("/")
- set month to value(item 1 of datestr)
- if (month > 12) or (month < 1) then
- setDelimiter()
- return(O)
- end if
- set day to value(item 2 of datestr)
- set year to value(item 3 of datestr)
- set year to getFullYear(year)
- set year to year - 1995
- set sumdays to 0
- set leapyear to 0
- repeat with tempyear = 0 to year
- set leapyear to IsLeapYear(tempyear + 1995)
- if leapyear = 0 then
- set numDaysInMonth to [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
- else
- set numDaysInMonth to [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
- end if
- if tempyear < year then
- set sumdays to sumdays + 365 + leapyear
- next repeat
- end if
- repeat with curMonth = 1 to month - 1
- set sumdays to sumdays + getAt(numDaysInMonth, curMonth)
- end repeat
- if (day < 0) or (getAt(numDaysInMonth, month) < day) then
- setDelimiter()
- return(O)
- else
- set sumdays to sumdays + day
- end if
- setDelimiter()
- return sumdays + 99995
- end repeat
- end if
- end
-
- on getDayOfWeek datestr
- set DayOfWeekList to [#Saturday, #Sunday, #Monday, #Tuesday, #Wednesday, #Thursday, #Friday]
- if integerp(datestr) then
- set serialdate to datestr
- else
- set serialdate to getSerialDate(datestr)
- end if
- set dayofweek to getAt(DayOfWeekList, (serialdate mod 7) + 1)
- return dayofweek
- end
-
- on getMonth datestr
- set MonthList to [#January, #February, #March, #April, #May, #June, #July, #August, #September, #October, #November, #December]
- if integerp(datestr) then
- set datestr to getDate(datestr)
- end if
- setDelimiter("/")
- set month to value(item 1 of datestr)
- setDelimiter()
- set monthtext to getAt(MonthList, month)
- return monthtext
- end
-
- on sum mylist
- set mysum to 0
- repeat with i = 1 to count(mylist)
- set mysum to mysum + getAt(mylist, i)
- end repeat
- return mysum
- end
-
- on setDelimiter delimiterchar
- global oldDelimiter
- if delimiterchar = 0 then
- if oldDelimiter = 0 then
- set the itemDelimiter to ","
- else
- set the itemDelimiter to oldDelimiter
- end if
- return oldDelimiter
- end if
- set oldDelimiter to the itemDelimiter
- if stringp(delimiterchar) then
- set the itemDelimiter to char 1 of delimiterchar
- else
- set the itemDelimiter to numToChar(delimiterchar)
- end if
- return oldDelimiter
- end
-
- on GetLongDate datestr
- set MonthList to ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
- if integerp(datestr) then
- set datestr to getDate(datestr)
- end if
- setDelimiter("/")
- set year to value(item 3 of datestr)
- set month to value(item 1 of datestr)
- set day to value(item 2 of datestr)
- if year < 100 then
- if year < 95 then
- set year to year + 100
- end if
- set year to 1900 + year
- end if
- set longdatestr to getDayOfWeek(datestr) & ", " & getAt(MonthList, month) && day & ", " & year
- return longdatestr
- end
-
- on getDate serialdate
- set serialdate to serialdate - 99995
- set currentyear to 1995
- if serialdate > 0 then
- set serialdate to serialdate - 366
- repeat while serialdate > 0
- set serialdate to serialdate - (365 + IsLeapYear(currentyear))
- set currentyear to currentyear + 1
- end repeat
- set serialdate to serialdate + (365 + IsLeapYear(currentyear))
- else
- set serialdate to -serialdate
- repeat while serialdate >= 0
- set currentyear to currentyear - 1
- set seriaIdate to serialdate - (365 + IsLeapYear(currentyear))
- end repeat
- set serialdate to -serialdate - 1
- end if
- if IsLeapYear(currentyear) = 0 then
- set numDaysInMonth to [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
- else
- set numDaysInMonth to [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
- end if
- repeat with month = 1 to 12
- set monthdays to getAt(numDaysInMonth, month)
- set serialdate to serialdate - monthdays
- if serialdate < 0 then
- set serialdate to serialdate + monthdays
- exit repeat
- end if
- end repeat
- set day to serialdate + (1 - IsLeapYear(currentyear))
- if (month = 13) and (day = 1) then
- set month to 1
- set day to 1
- set currentyear to currentyear + 1
- end if
- if day = 0 then
- if month > 1 then
- set month to month - 1
- else
- set month to 12
- end if
- set day to getAt(numDaysInMonth, month)
- end if
- set datestr to string(month & "/" & day & "/" & chars(string(currentyear), 3, 4))
- return datestr
- end
-
- on AddDate datestr, numDays
- set curserdate to getSerialDate(datestr)
- if curserdate = 0 then
- cursor(0)
- alert("The date entered is invalid")
- exit
- else
- set newdatestr to getDate(curserdate + numDays)
- end if
- return newdatestr
- end
-
- on differenceDate datestr1, datestr2
- set diff to getSerialDate(datestr2) - getSerialDate(datestr1)
- return diff
- end
-
- on getFullYear year
- if (year >= 0) and (year < 100) then
- if year < 95 then
- set fullyear to year + 100
- else
- set fullyear to year
- end if
- set fullyear to fullyear + 1900
- else
- if (year > 1786) and (year < 10000) then
- set fullyear to year
- else
- set fullyear to 0
- end if
- end if
- return integer(fullyear)
- end
-
- on IsLeapYear year
- set tempyear to getFullYear(year)
- if (tempyear mod 4) = 0 then
- if (tempyear mod 100) = 0 then
- if (tempyear mod 400) = 0 then
- set leapyear to 1
- else
- set leapyear to 0
- end if
- else
- set leapyear to 1
- end if
- else
- set leapyear to 0
- end if
- return leapyear
- end
-